// ConApp.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream.h>
class A {
private:
int a_;
public:
A() { a_ = 0; };
A(int a) { a_ = a; };
init(int a) { a_ = a; };
void out() { cout << a_ << endl; };
};
int main(int argc, char* argv[])
{
printf("Hello World!\n");
int i;
A a(24);
a.out();
A ar[] = { A(21), A(22), A(23), A(24) };
for (i = 0; i < 4; i++) {
ar[i].out();
}
A ar2[4];
for (i = 0; i < 4; i++) {
ar2[i].init(i);
ar2[i].out();
}
A* pa[4];
for (i = 0; i < 4; i++) {
pa[i] = new A(i); // using pointer class
pa[i]->out();
}
return 0;
}
배열에서는 인자가 있는 생성자는 사용할 수 없습니다.
배열을 선언하면 각각의 원소에 대해 인자가 없는 생성자가 호풀되어 초기화됩니다. 인자가 있는 생성자는 사용할 수 없습니다.
그렇군요.감사합니다.
그렇군요.
감사합니다.
[code:1]#include <iostream.h>c
담배 고만 펴야겠다...
감사합니다.그런방법이 있엇군요.
감사합니다.
그런방법이 있엇군요.
그런데 루프에서 생성을 하고 싶을경우에는 어떻게 해야되죠?
그런데 루프에서 생성을 하고 싶을경우에는 어떻게 해야되죠?
1. 인자없는 default 생성자를 선언합니다. (필수)2. 초기값
1. 인자없는 default 생성자를 선언합니다. (필수)
2. 초기값을 입력받는 멤버함수(ex. init)를 추가합니다.
3. cleol님이 말씀하신것처럼 배열을 선언합니다.
4. 루프에서 init(var list...)를 호출하여 초기화합니다.
생성자 중에 Copy Constructor라는 것을 이용하여 루프에서 생성하는 방법이 있긴 한데 오버헤드가 커서 별로 권하고 싶지 않습니다.
더좋은 방법은 생각이 안나네요.
담배 고만 펴야겠다...
음.. 클래스 포인터 배열을 이용할 수도 있겠군요....
음.. 클래스 포인터 배열을 이용할 수도 있겠군요....
담배 고만 펴야겠다...
A[i].classA(3)이렇게 하면 된다는 말이신가요?이
A[i].classA(3)
이렇게 하면 된다는 말이신가요?
이렇게 하면 컴파일 에러나던데요?
적당한걸로 골라서 쓰세요~[code:1]// ConApp.cpp
적당한걸로 골라서 쓰세요~
담배 고만 펴야겠다...
라이브러리 이니 4번이 적당한거 같네요감사드립니다.
라이브러리 이니 4번이 적당한거 같네요
감사드립니다.
[quote="dolsemix"]적당한걸로 골라서 쓰세요~[cod
delete pa[i];
도 써줘야 하지 않을까요?
----
블로그 / 위키 / 리눅스 스크린샷 갤러리
당연히 써줘야 하죠.그런데 프로세스 끝나면 OS가 알아서 죽여주지
당연히 써줘야 하죠.
그런데 프로세스 끝나면 OS가 알아서 죽여주지 않나요? (요즘)
[quote="lkjt"]당연히 써줘야 하죠.그런데 프로세스 끝나
http://bbs.kldp.org/viewtopic.php?t=33274
언제나 시작
[code:1] A ar[] = { A
이거 실제로 생성자가 8번이나 불리는 방식 아닌가요.
오버헤드를 생각한다면..;;
http://home.postech.ac.kr/~sodomau
생성자에서 초기화 하지 않고init()라는 함수를 두어서 초기화
생성자에서 초기화 하지 않고
init()라는 함수를 두어서 초기화 하는 기법이 더 유용합니다
실제로 많은 책의 코드를 보면 생성자에서 하는 역활은
자기 멤버변수들을 0이나 NULL로 초기화하고
실제로는 init 같은 함수에서 인자를 받아 진짜 초기화를 합니다
승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스
^^
프로세스가 데몬이라면 어떻게 하실것인지^^;;
매우 위험한 생각인것 같습니다.
-----------
청하가 제안하는 소프트웨어 엔지니어로써 재미있게 사는 법
http://sozu.tistory.com
C++ 객채배열초기화 분석
placement new의 사용도 한가지 방법이라고 생각이 듭니다.
부가적인 메모리 할당이나 소멸자의 호출등의 작업을 해야하지만 디폴트 생성자가 없는경우에도 사용을 할수 있다는 장점이 있습니다.
--
cdecl
댓글 달기