J-XMoses

          J-XMoses

          2007年3月22日 #

          typedef keyword in C++

          read this article -> http://www.functionx.com/cpp/keywords/typedef.htm
          It said that "The typedef keyword can be followed by an attribute before the data type. In its simplest form, the attribute can be that of an access level such as public, private, or protected." and provide a examples:


          #include <iostream>
          #include <string>
          using namespace std;
          
          typedef struct Student;
          typedef class Country;
          
          typedef public short SmallNumber;
          typedef private unsigned int Positive;
          typedef protected double* PDouble;
          typedef public string FiveStrings[5];
          typedef private double (*Addition)(double value1, double value2);
          
          struct Student
          {
          	string FirstName;
          	string LastName;
          };
          
          typedef struct _Empl
          {
          	string FullName;
          	double HourlySalary;
          }Employee;
          
          class Country
          {
          	string Name;
          	string Capital;
          	string Code;
          };
          
          double Add(double x, double y)
          {
          	double result = x + y;
          	return result;
          }
          
          typedef enum EmplStatus { esFullTime, esPartTime, esContractor };
          typedef Student *PStudent;
          typedef Country *PCountry;
          
          int main()
          {
          	Student pupil;
          	Country pais;
          	EmplStatus emplst;
          	PStudent ptrStd = new Student;
          	PCountry pPais = new Country;
          
          	return 0;
          }


          I found that I can't compile it on my Linux using g++.


          [root@sd1 xxx]# g++ typedef.cpp -o typedef
          typedef.cpp:8: error: expected unqualified-id before 'public'
          typedef.cpp:9: error: expected unqualified-id before 'private'
          typedef.cpp:10: error: expected unqualified-id before 'protected'
          typedef.cpp:11: error: expected unqualified-id before 'public'
          typedef.cpp:12: error: expected unqualified-id before 'private'


          Why, can anybody tell me?
          :)

          posted @ 2007-03-22 17:48 Java-XMoses 閱讀(470) | 評論 (0)編輯 收藏

          C++ operator precedence

          C++ operator precedence
          http://www.cppreference.com/operator_precedence.html

          PrecedenceOperatorDescriptionExampleAssociativity
          1()
          []
          ->
          .
          ::
          ++
          --
          Grouping operator
          Array access
          Member access from a pointer
          Member access from an object
          Scoping operator
          Post-increment
          Post-decrement
          (a + b) / 4;
          array[4] = 2;
          ptr->age = 34;
          obj.age = 34;
          Class::age = 2;
          for( i = 0; i < 10; i++ ) ...
          for( i = 10; i > 0; i-- ) ...
          left to right
          2!
          ~
          ++
          --
          -
          +
          *
          &
          (type)
          sizeof
          Logical negation
          Bitwise complement
          Pre-increment
          Pre-decrement
          Unary minus
          Unary plus
          Dereference
          Address of
          Cast to a given type
          Return size in bytes
          if( !done ) ...
          flags = ~flags;
          for( i = 0; i < 10; ++i ) ...
          for( i = 10; i > 0; --i ) ...
          int i = -1;
          int i = +1;
          data = *ptr;
          address = &obj;
          int i = (int) floatNum;
          int size = sizeof(floatNum);
          right to left
          3->*
          .*
          Member pointer selector
          Member pointer selector
          ptr->*var = 24;
          obj.*var = 24;
          left to right
          4*
          /
          %
          Multiplication
          Division
          Modulus
          int i = 2 * 4;
          float f = 10 / 3;
          int rem = 4 % 3;
          left to right
          5+
          -
          Addition
          Subtraction
          int i = 2 + 3;
          int i = 5 - 1;
          left to right
          6<<
          >>
          Bitwise shift left
          Bitwise shift right
          int flags = 33 << 1;
          int flags = 33 >> 1;
          left to right
          7<
          <=
          >
          >=
          Comparison less-than
          Comparison less-than-or-equal-to
          Comparison greater-than
          Comparison geater-than-or-equal-to
          if( i < 42 ) ...
          if( i <= 42 ) ...
          if( i > 42 ) ...
          if( i >= 42 ) ...
          left to right
          8==
          !=
          Comparison equal-to
          Comparison not-equal-to
          if( i == 42 ) ...
          if( i != 42 ) ...
          left to right
          9&Bitwise ANDflags = flags & 42;left to right
          10^Bitwise exclusive ORflags = flags ^ 42;left to right
          11|Bitwise inclusive (normal) ORflags = flags | 42;left to right
          12&&Logical ANDif( conditionA && conditionB ) ...left to right
          13||Logical ORif( conditionA || conditionB ) ...left to right
          14? :Ternary conditional (if-then-else)int i = (a > b) ? a : b;right to left
          15=
          +=
          -=
          *=
          /=
          %=
          &=
          ^=
          |=
          <<=
          >>=
          Assignment operator
          Increment and assign
          Decrement and assign
          Multiply and assign
          Divide and assign
          Modulo and assign
          Bitwise AND and assign
          Bitwise exclusive OR and assign
          Bitwise inclusive (normal) OR and assign
          Bitwise shift left and assign
          Bitwise shift right and assign
          int a = b;
          a += 3;
          b -= 4;
          a *= 5;
          a /= 2;
          a %= 3;
          flags &= new_flags;
          flags ^= new_flags;
          flags |= new_flags;
          flags <<= 2;
          flags >>= 2;
          right to left
          16,Sequential evaluation operatorfor( i = 0, j = 0; i < 10; i++, j++ ) ...left to right


          Finally, I find basic knowledge is important.

          posted @ 2007-03-22 17:11 Java-XMoses 閱讀(251) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 大竹县| 萍乡市| 凌源市| 新源县| 汉阴县| 衢州市| 庆元县| 喜德县| 岚皋县| 兴化市| 吉林市| 淮南市| 阿拉善盟| 辰溪县| 肥城市| 枣庄市| 德州市| 连城县| 保德县| 太谷县| 赤水市| 临沂市| 包头市| 昂仁县| 宜章县| 黄大仙区| 波密县| 彰武县| 金昌市| 泊头市| 凌云县| 前郭尔| 云霄县| 华宁县| 安康市| 泽普县| 庆城县| 临潭县| 黄大仙区| 喀喇| 正宁县|