2020. 10. 23. 22:21ㆍ컴퓨터 수업/C++
vector클래스 생성자 인수
vector<int> vec(2);
- vector 클래스의 내부 data들을 int로 정의하고, 그 size는 2이다.
vector<int> vec(2,3);
- vector 클래스의 내부 data들을 int로 정의하고, 그 size는 2이며, 그 초깃값은 3이다.
vector<int> vec(2, vector<int>(3));
-vector 클래스의 내부 data들을 int로 정의하고, 그 size는 2이며, 그 초깃값은 anonymous vector object이며 그 object의 내부 data들은 int로 정의되어있고, size는 3으로 초기화 되어있다.
-complie error, anonymous vec을 인수로 사용하는것은 가능하긴하지만, 현재 vector클래스의 내부 data들은 int로 정의되어있다. 따라서 안된다.
vector<vector<int>> vec(2,3);-바로 위와 마찬가지 이유로 컴파일이 안된다, 현재 내부 data는 vector<int> datatype으로 지정되어 있으나, 현재 초기화값을 3으로 지정중이기 때문에 되지않는다.
vector<vector<int>> vec(2,vector<int>(3));
-컴파일이 된다. size를 2만큼 지정하고, 초기화를 vector<int>(3) 으로 행한다, 이때 이 vector의 int size는 3이다.
생성자의 다른 기입 방식
Cat::Cat(const std::string &_name, int _weight, int _height):name(_name),weight(_weight),height(_height){
if(_weight < 0){
std::cout <<"고양이의 무게가 어케 0보다 작아 바보야" << std::endl;
}
weight = 0;
}
생성자 옆에 : 붙이고
필드(파라미터),필드2(파라미터2){
} 이런식으로 생성자를 만든다.
생성자의 curly brace와 parentheses는 같다
즉 {}와 ()가 같다는 뜻이다
Cat(Frisky, 2, 3) == Cat{Frisky, 2, 3}
-> operator의 의의
Myclass *ob1;
*(ob1).name 과
ob1->name은 같다. 두 표현이 같음을 숙지
★static
@Class 내부의 멤버로서 썬언된 static 필드는 다음과 같이 초기화한다.
int Account::createdAccountcount =0;
- main함수 내부에서 실행하며, int는 왜하지 아아악
@Class 내부의 멤버로서 선언된 static 필드는 다음과 같이 호출한다.
1. Class로 호출하기
Account::createdAccountcount+++;
2. Object로 호출하기
account1.createdAccountcount++;
@Class 내부의 static 메소드는
1.static 필드에만 접근 할 수 있다.
2.static 메소드만 재호출 할 수 있다.
전반적으로, static은 다른 storage에 저장되고, 이에따라 static은 class의 this 포인터를 가지지않기 때문이다. 따라서 @Class 내부의 static메소드가 static 필드와 메소드에만 접근 할 수 있는것이다. 해당 클래스에 대한 scope가 없기 때문에.
'컴퓨터 수업 > C++' 카테고리의 다른 글
C++ 템플릿에 관한 얘기 (0) | 2020.10.26 |
---|---|
CLion 인코딩 (0) | 2020.10.24 |
대입연산자(=)의 오버로딩 시, referenece를 반환하는 이유 (0) | 2020.10.16 |
lambda function (0) | 2020.10.15 |
header과 cpp파일의 include 관계 (0) | 2020.10.15 |