코드베이스가 거대한이기 때문에 어떤 방법론을 사용하는지 모르겠습니다.이름이 클래스 이름 자체 인 호출 함수?
class ABC {
member_func(string c);
};
main() {
ABC("").member_func("this random string");
}
ABC("");
를 호출 할 수있게 것이다 누락 된 코드는 무엇입니까 :
어디서나 생성 된 클래스의 객체를 보지 못했습니다.
코드베이스가 거대한이기 때문에 어떤 방법론을 사용하는지 모르겠습니다.이름이 클래스 이름 자체 인 호출 함수?
class ABC {
member_func(string c);
};
main() {
ABC("").member_func("this random string");
}
ABC("");
를 호출 할 수있게 것이다 누락 된 코드는 무엇입니까 :
어디서나 생성 된 클래스의 객체를 보지 못했습니다.
단순히 ABC
유형의 개체를 생성하지만 해당 개체의 영구 메모리 위치는 초기화하지 않습니다. 즉, ABC
생성자에 대한 호출을 생성하는 초기화 된 객체는 임시이며 호출 후 호출 될 수있는 메모리 위치에 생성되지 않기 때문에 호출 후에 손실됩니다. 호출 후 자동 변수, 정적 메모리 위치 등. 그래서 "실세계"에서 사용할 수있는 것과 같은 호출을하는 "누락 된"코드는 나중에 액세스 할 수 있도록 구성된 실제 이름입니다. 예를 들어 ABC my_object("");
또는 ABC my_object = ABC("");
.
UPDATE : 당신이 게시 한 업데이트 된 코드에서, 무슨 일어나고은 다시 임시에 호출되고 구성되는 유형 ABC
의 임시 객체, 다음 member_func
라는 클래스 ABC
의 비 정적 방법 그것은 ABC
의 생성자에 대한 호출에 의해 생성되었습니다. 이 코드가 "실제 세계"에서 어떤 의미를 갖는지는 물론, member_func
에 대한 호출은 클래스 인스턴스 외부에서 볼 수있는 부작용을 포함해야합니다. 즉, 클래스 인스턴스에 데이터 멤버가 포함될 수 있습니다 즉 호출이 수정하는 공유 메모리 객체에 대한 포인터). 게시 한 코드 샘플에서는 호출의 부작용이없는 것 같지만, 이는 의도적이지 않은 모든 작업과 목적을위한 것입니다 ... ABC
임시 인스턴스가 만들어지면 호출되는 메서드가 있습니다. 인스턴스에 대한 참조는 현재 main()
범위에서 액세스 할 수있는 메모리 위치에 구성되지 않았기 때문에 손실됩니다.
class ABC
{
std::string d;
public:
ABC(std::string x) // For the ABC("").
{ d = x; }
void foo(std::string x) // For the foo("").
{ std::cout << d << std::endl << x << std::endl; }
};
int main()
{
ABC("This creates a temporary object.").foo("This calls foo().");
// Is the same as...
{
ABC obj("This creates another object.");
obj.foo("This calls obj.foo().");
} // obj is destroyed.
return(0);
}
자명하다 ... 나는 희망한다. :)
정의 된 함수 나 펑터가 없습니다. –
함수 호출 또는 생성자입니까? 그것들 중 하나 일 수 있습니다. –