2016-05-08 1 views
-7

мой вопрос: каково значение статического элемента данных после создания более одного экземпляра ??? если у меня есть этот код в C++:Каково значение статического элемента данных после создания нескольких экземпляров?

class car 
{ 
    public: 
    static int x; 
    car() 
    { 
     x=x+1; 
    } 
} 

void main() 
{ 
    car first=new car();// here the value of x is 1; 
    car tow=new car();// here the value of x is 2; 
    int y=first.x; // here what the value of y 
} 

значение у равно 1 или 2 ??

+1

Попробуйте и посмотрите. – hexafraction

+0

Ну, вы могли бы легко попробовать это. –

+0

Кроме того, вы не можете, потому что есть 4 вхождения из трех разных ошибок, которые не позволяют компиляции. – chris

ответ

0

Значение у будет 2. Вот как я получил его на работу в Visual Studio:

#include "stdafx.h" 
#include <iostream> 

class car 
{ 
public: 
    static int x; 
    car(); 
}; 

int car::x = 0; 

car::car(){ 
    x = x + 1; 
} 

int main() 
{ 
    car first = car();// here the value of x is 1; 
    car tow = car();// here the value of x is 2; 
    int y = first.x; // here what the value of y 

    std::cout << y; 

    int wait; 
    std::cin >> wait; 
} 
+0

ОК спасибо вам большое @ Dudebird47 – sam

0

Ваш код в основном неправильный, но для ответа на ваш вопрос да, точка статических членов класса заключается в том, что они разделяются каждым экземпляром этого класса.

Итак, если вы установите x как статический член для вашего автомобиля класса, то каждый раз, когда вы вызываете конструктора автомобиля, который увеличивает x, значение x будет увеличено на единицу.

+0

, поэтому значение y равно 2 ?? @zoubida – sam

Смежные вопросы