본문 바로가기

2학년 1학기/윈도우즈프로그래밍II

20150401 윈도우즈프로그래밍II - 5주차

#include<iostream>


using std::cout;

using std::endl;


class Dog {

private:

int age;

double weight;

public:

int getage();

void setage(int ninput);

double getweight();

void setweight(double ninput);

};

int Dog::getage(){

return age;

}

void Dog::setage(int ninput){

age = ninput;

}

double Dog::getweight(){

return weight;

}

void Dog::setweight(double ninput){

weight = ninput;

}


int main(void){


Dog Happy;                        // Dog class의 Happy객체 정의

//  Dog.Age=2;                   // ① Dog는 class

cout<<"초기화 하지 않고 출력 : "<<Happy.getage()<<endl;    // 초기화 하지 않고 사용 했을 경우

Happy.setage(3);               // ② Age는 private멤버로 클래스 밖에서 접근 불가

cout<<"Happy의 나이 : "<<Happy.getage()<<endl;    // ③ Age는 전용멤버로 접근 불가

Happy.setweight(3.5);

cout<<"Happy의 몸무게 : "<<Happy.getweight()<<endl; 

return 0;

}








#include <iostream>
#include <string>
using std::cout;

int main(void)
{
char s1[5];
char s2[5]="soft";   //원본
strcpy(s1,s2);  //s2주소의 문자열을 s1주소로 복사
cout<<"s1="<<s1<<"  s2="<<s2;
return 0;

}

warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

strcpy 대신 strcpy_s 권유

#define _CRT_SECURE_NO_WARNINGS
경고 안뜸


#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1

strcpy 를 써도 내부 처리는 strcpy_s 로 처리됨


#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1

#include <iostream>

#include <string>

using std::cout;


int main(void)

{

char s1[5];

char s2[5]="soft";          //원본

strcpy(s1,s2);

// strcpy_s(s1,5,s2);

cout<<"s1="<<s1<<"  s2="<<s2;

return 0;

}



#include <stdio.h>
void swap(int *, int *);
void main(void)
{
int a=2,b=5;    
printf("전: a=%d, b=%d\n",a,b);
swap(&a,&b);
printf("후: a=%d, b=%d\n",a,b);
}
void swap(int *pa, int *pb)
{  //int *pa=&a, int *pb=&b가 전달 됨 
int temp;
temp=*pa;  //temp=2;
*pa=*pb;    //a주소의 값으로 b주소의 값인 5 대입
*pb=temp;  //2를 b주소의 값으로 대입
printf("안: *pa=%d, *pb=%d\n",*pa,*pb);
}



#include <iostream>

using std::cout;

void Add(int a, int b,int*s,int*o,int*e,double*d);

int main(void)

{

int a=2,b=5,add,odd,ex;

double de;

Add(a,b,&add,&odd,&ex,&de);


printf("%d, %d, %d, %.1f \n",add,odd,ex,de);


return 0;

}

void Add(int a, int b,int*s,int*o,int*e,double*d)

{

*s=a+b;

*o=a-b;

*e=a*b;

*d=(double)a/b;

}



#include <iostream>

using std::cout;

class Dog{

private:

int Age;

public:

int GetAge(){return Age;}

void SetAge(int age){Age=age;}

};

void main()

{

       Dog dd[5];

       Dog *pd;

       pd=dd;               //배열의 이름은 그 배열의 시작주소이다.

   for(int i=0;i<5;i++){  

          pd->SetAge(i);

      cout<<dd[i].GetAge();

      cout<<pd->GetAge();

      pd++;             //다음 방의 주소로

       }   //0011223344

}


소멸자


#include <iostream>

using std::cout;


class Dog{

private:

int Age;

public:

Dog(int a){Age=a;cout<<"멍\n";}

~Dog(){cout<<"소멸\n";}   

// 소멸자 정의

int GetAge();

void SetAge(int age);

};


int Dog::GetAge()

{

return Age; 

}

void Dog::SetAge(int age)

Age=age; 

}

void main()

{

Dog Happy(5);

cout<<"main함수 시작\n";

cout<<Happy.GetAge();

cout<<"\nmain함수 끝\n";

}



생성 소멸 포인터 합치기

#include <iostream>
#include <string>
using std::cout;

class Cat{
private: //생략가능
int Age;
//char Name[20]; // A
char *Name;    //B
public: 
Cat(int age, char* name){
Age = age;
Name = name;
}
~Cat(){
cout<<"야옹";
}
int GetAge();
char * GetName();
void SetAge(int age);
void SetName(char *pName);

};
int Cat::GetAge()
{
return Age; 
}
void Cat::SetAge(int age)
{
Age=age; 
}
void Cat::SetName(char *pName)
//strcpy_s(Name, 20,pName); //A
//strcpy(대상주소, 원본주소);
//strcpy_s(대상주소, 대상의길이, 원본주소);
Name=pName;   //B, 주소 대입
}
char * Cat::GetName()
{
return Name;
}
void main()
{
Cat Nabi(1,"나비");
cout<<Nabi.GetName()<<" 나이는 "<<Nabi.GetAge()<<"살이다."; 
}